package com.itheima.controller;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
// 处理异常的controller层对象  加上这个注解 只要controller有 异常就会通知
@RestControllerAdvice// @ResponseBody + @ControllerAdvice
                                     // @Controoler +@Advice 通知 建议
               // 有事 找  通知  经理
@Slf4j
public class GlobalExceptionHandler {//本身就是controller 只不顾是特殊 来处理异常
   // 处理代码 因为是跟 前端交流 跟之前controller方法定义一样
    @ExceptionHandler(Exception.class)//根据异常的类型 抓取异常
    public Result exceptionHandler(Exception e){//参数列表 写 异常类型
                  // 参数如果写  NullPointerException e 只针对空指针异常
                  //  可以接收细粒度的 异常  针对不同异常 返回不同的信息 --- 项目中
                  //  Exception e 接收所有的异常
        // 先调用异常 打印信息  把异常问题 留住 打印控制台  记录在日志中
        e.printStackTrace();//打印异常栈信息  异常详情
        log.info("出现的异常消息为:"+e.getMessage());
        //响应一个错误
        return Result.error("对不起,操作有误,请联系管理员");// 你们程序如果出现了 对不起操作有误 说明咱们有异常要处理
    }
}
